package util;

import java.util.ArrayList;
import java.util.List;
import basedados.arquivos_texto.TxtIObj;
import interfaces.IObj;
import interfaces.IPreencherJTable;

public class Albun implements IObj, IPreencherJTable {
	private int _id;
	private String _artist;
	private String _title;
	private int _year;
	private double _valor;
	private boolean _availability;
	private short _identificadorColecionador;
	
	public void setIdentificadorColecionador(short identificadorColecionador) {
		this._identificadorColecionador = identificadorColecionador;
	}
	public short getIdentificadorColecionador() {
		return _identificadorColecionador;
	}
	
	public Albun(short identificadorColecionador){setIdentificadorColecionador(identificadorColecionador);}
	public Albun(String artist, String title, int year, int id, double valor, short identificadorColecionador){
		setArtist(artist);
		setTitle(title);
		setYear(year);
		setValor(valor);
		_availability = false;
		_id = id;
		setIdentificadorColecionador(identificadorColecionador);
	}
	
	public void setValor(double valor) { this._valor = valor; }
	public double getValor() { return _valor; }
	public void setYear(int year) { this._year = year; }
	public void setTitle(String title) { this._title = title; }
	public void setArtist(String _artist) { this._artist = _artist; }
	public String getArtist(){ return _artist; }
	public String getTitle(){ return _title; }
	public int getYear(){ return _year; }
	public void setAvailability(boolean a){ _availability = a; }
	public boolean isAvailable(){ return _availability; }
	public int getId(){ return _id; }

	@Override public void setCodigo(int cod) { _id = cod; }
	@Override public int getCodigo() { return getId(); }

	@Override
	public String[] getDados() {
		String[] d = new String[6];
		d[0] = String.valueOf(getCodigo());
		d[1] = getArtist();
		d[2] = getTitle();
		d[3] = String.valueOf(getYear());
		d[4] = String.valueOf(getValor());
		d[5] = String.valueOf(isAvailable()?"1":"0");
		return d;
	}
	
	@Override
	public void setDados(String[] dados) {
		if (dados.length < 6) return;
		setCodigo(Integer.valueOf(dados[0]));
		setArtist(dados[1]);
		setTitle(dados[2]);
		setYear(Integer.valueOf(dados[3]));
		setValor(Double.parseDouble(dados[4]));
		setAvailability(dados[5].equals("1"));
	}

	@Override public IObj getInstance() { return new Albun(getIdentificadorColecionador()); }
	@Override public String getPastaeArquivo() { return "bd/albuns_"+getIdentificadorColecionador()+".txt"; }
	
	@Override
	public String[] getTitulosJTable() {
		return new String[] {"Codigo", "Artista", "Titulo", "Ano", "Valor", "Disponivel"};
	}

	@Override
	public List<String[]> getDadosJTable() {
		List<String[]> rt = new ArrayList<String[]>();
		IObj[] objs = new TxtIObj(getInstance()).getIObjs();
		for (int i = 0; i < objs.length; i++) { rt.add(objs[i].getDados()); }
		return rt;
	}
	
	public void copy(Albun a){
		this.setDados(a.getDados());
	}
	
	/**
	 * sobrecarga toString()
	 * */
	@Override
	public String toString() {
		String rt = "";
		String[] str = getDados(); if (str==null||str.length<=0){return rt;}
		for (int i = 0; i< str.length; i++){
			rt += str[i];
			if (i < str.length-1) rt += ";";
		}
		return rt;
	}
}